package com.project.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONObject;
import org.json.JSONArray;

import com.project.dao.implement.GetDirectAccountImpl;
import com.project.bean.GetDirectAccount;

public class GetDirectAccountServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public GetDirectAccountServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html/json;charset=utf-8");
		request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        
        String userName =request.getParameter("username");
        String userBankAccount =request.getParameter("userBankAccount");
        String userCreateActBank =request.getParameter("userCreateActBank");
        
        Map<String,Object> param = new HashMap<String,Object>();
    	param.put("userAccountNum", userBankAccount);
    	param.put("username", userName);
    	param.put("userCreateActBank", userCreateActBank);
    	
    	GetDirectAccountImpl accountListMapper = new GetDirectAccountImpl();
    	
    	List<GetDirectAccount> inAccountList = accountListMapper.GetInDirectAccountList(param);
    	List<GetDirectAccount> outAccountList = accountListMapper.GetOutDirectAccountList(param);
    	Map<GetDirectAccount, String> accountList = new HashMap<GetDirectAccount, String>();
    	for(GetDirectAccount inItem: inAccountList){
    		if (inItem == null)
    		{
    			continue;
    		}
    		for(GetDirectAccount outItem: outAccountList){
    			if (outItem == null)
        		{
    				outAccountList.remove(outItem);
        			continue;
        		}
        		if (inItem.GetAccount() == outItem.GetAccount())
        		{
        			accountList.put(inItem, "支付收款");
        			outAccountList.remove(outItem);
        		}
        		else
        		{
        			accountList.put(inItem, "仅收款");
        		}
        	}
    	}
    	
    	for(GetDirectAccount outItem: outAccountList){
			accountList.put(outItem, "仅支付");
    	}
    	
    	JSONObject json = new JSONObject(); 
    	try{    
    		JSONArray jsonArray =new JSONArray();
    		JSONObject member = null; 
    		
    		for (GetDirectAccount key : accountList.keySet()) {
    			String account = key.GetAccount();
    			String username = key.GetName();
    			String idNum = key.GetId();
    		    String mode = accountList.get(key);
    		    
    		    member = new JSONObject();
    			member.put("userAccountNum", account);
    			member.put("directName", username);
    			member.put("directIdentification", idNum);
    			member.put("directMode", mode);
    			jsonArray.put(member);  
    		}

    		json.put("jsonArray", jsonArray);
    	}
    	catch(Exception e){               
    		e.printStackTrace();           
    	}           
    	        
    	response.getWriter().write(json.toString());  
    	response.getWriter().close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
